package snowflake

import (
	"time"

	sf "github.com/bwmarrin/snowflake"
	"github.com/spf13/viper"
)

// 雪花算法，它是Twitter开源的由64位整数组成分布式ID，性能较⾼，并且在单机上递增。
var node *sf.Node

// 初始化一个全局的node节点(传入时间因子和 机器标识)
func Init() (err error) {
	var st time.Time
	st, err = time.Parse("2006-01-02", viper.GetString("start_time"))
	if err != nil {
		return
	}
	sf.Epoch = st.UnixNano() / 1000000                   //初始化开始时间
	node, err = sf.NewNode(viper.GetInt64("machine_id")) //指定机器id
	return
}
func GenID() int64 {
	return node.Generate().Int64()
}

// func main() {
// 	if err := Init("2020-07-01", 1); err != nil {
// 		fmt.Printf("init failed, err:%v\n", err)
// 		return
// 	}
// 	id := GenID()
// 	fmt.Println(id)
// }
